﻿
using BrnMall.WeiXin.Sdk;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BrnMall.Sdk.WeiXin.Domain.card
{
    /// <summary>
    /// 卡券列表
    /// </summary>
    public class CardList : BaseResult
    {
        /// <summary>
        /// 卡券ID列表
        /// </summary>
        public List<string> card_id_list { get; set; }
        /// <summary>
        /// 卡券ID数量
        /// </summary>
        public int total_num { get; set; }
    }

    public class WxCardInfo : BaseResult
    {
        public CardDetailInfo card { get; set; }
    }

    /// <summary>
    /// 卡券详情
    /// </summary>
    public class CardDetailInfo
    {
        /// <summary>
        /// 卡券类型。 团购券：GROUPON; 折扣券：DISCOUNT; 礼品券：GIFT; 代金券：CASH; 通用券：GENERAL_COUPON; 会员卡：MEMBER_CARD; 景点门票：SCENIC_TICKET ； 电影票：MOVIE_TICKET； 飞机票：BOARDING_PASS； 会议门票：MEETING_TICKET； 汽车票：BUS_TICKET;
        /// </summary>
        public string card_type { get; set; }
        /// <summary>
        /// 通用券
        /// </summary>
        public WxCash cash { get; set; }
        /// <summary>
        /// 会员卡
        /// </summary>
        public WxCard member_card { get; set; }
    }

    /// <summary>
    /// 通用券(优惠券)
    /// </summary>
    public class WxCash
    {
        /// <summary>
        /// 卡券基本信息
        /// </summary>
        public CardBaseInfo base_info { get; set; }
        /// <summary>
        /// 高级信息
        /// </summary>
        public CardAdvancedInfo advanced_info { get; set; }
        /// <summary>
        /// 代金券专用，表示起用金额（单位为分）
        /// </summary>
        public int least_cost { get; set; }
        /// <summary>
        /// 代金券专用，表示减免金额（单位为分）
        /// </summary>
        public int reduce_cost { get; set; }
    }

    /// <summary>
    /// 会员卡
    /// </summary>
    public class WxCard
    {
        /// <summary>
        /// 卡券基本信息
        /// </summary>
        public CardBaseInfo base_info { get; set; }
        public int discount { get; set; }
    }

    /// <summary>
    /// 卡券基本信息
    /// </summary>
    public class CardBaseInfo
    {
        public string id { get; set; }
        /// <summary>
        /// 卡券名（字数上限为9个汉字）
        /// </summary>
        public string title { get; set; }
        /// <summary>
        /// 卡券的商户logo，建议像素为300*300
        /// </summary>
        public string logo_url { get; set; }
        /// <summary>
        /// "CODE_TYPE_TEXT"，文本 ； "CODE_TYPE_BARCODE"，一维码 ； "CODE_TYPE_QRCODE"， 二维码； "CODE_TYPE_ONLY_QRCODE", 二维码无code显示； "CODE_TYPE_ONLY_BARCODE",一维码无code显示；
        /// </summary>
        public string code_type { get; set; }
        /// <summary>
        /// 商户名字（填写直接提供服务的商户名 ，第三方商户名填写在source字段）。
        /// </summary>
        public string brand_name { get; set; }
        /// <summary>
        /// 卡券的背景颜色
        /// </summary>
        public string color { get; set; }
        /// <summary>
        /// 使用提醒，字数上限为16个汉字
        /// </summary>
        public string notice { get; set; }
        /// <summary>
        /// 使用说明。长文本描述
        /// </summary>
        public string description { get; set; }

        /// <summary>
        /// 每人可领券的数量限制
        /// </summary>
        public int get_limit { get; set; }
        /// <summary>
        /// 卡券是否可分享
        /// </summary>
        public bool can_share { get; set; }
        /// <summary>
        /// 卡券是否可转赠
        /// </summary>
        public bool can_give_friend { get; set; }
        /// <summary>
        /// “CARD_STATUS_NOT_VERIFY”,待审核 ； “CARD_STATUS_VERIFY_FAIL”,审核失败； “CARD_STATUS_VERIFY_OK”，通过审核； “CARD_STATUS_DELETE”，卡券被商户删除； “CARD_STATUS_DISPATCH”，在公众平台投放过的卡券 
        /// </summary>
        public string status { get; set; }
        public string create_time { get; set; }
        public string update_time { get; set; }
        /// <summary>
        /// 商品信息
        /// </summary>
        public CardSKU sku { get; set; }
        /// <summary>
        /// 有效期
        /// </summary>
        public CardDate date_info { get; set; }

        /// <summary>
        /// 门店位置ID
        /// </summary>
        public List<int> location_id_list { get; set; }
        /// <summary>
        /// 是否支持全部门店，与location_id_list互斥
        /// </summary>
        public bool use_all_locations { get; set; }
    }

    public class CardSKU
    {
        /// <summary>
        /// 卡券当前库存数量
        /// </summary>
        public int quantity { get; set; }
        /// <summary>
        /// 卡券全部库存的数量，上限为100000000。
        /// </summary>
        public int total_quantity { get; set; }
    }

    public class CardDate
    {
        /// <summary>
        /// 使用时间的类型 DATE_TYPE_FIX_TIME_RANGE 表示固定日期区间，DATE_TYPE_FIX_TERM表示固定时长（自领取后按天算），DATE_TYPE_PERMANENT 表示永久有效（会员卡类型专用）。
        /// </summary>
        public string type { get; set; }
        /// <summary>
        /// 领取后有效天数 （单位为天）
        /// </summary>
        public int fixed_term { get; set; }
        /// <summary>
        /// 领取后几天生效，当天生效填写0（单位为天）
        /// </summary>
        public int fixed_begin_term { get; set; }

        /// <summary>
        /// 开始时间戳，必须小于2038年1月19日（单位为秒）
        /// </summary>
        public int begin_timestamp { get; set; }
        /// <summary>
        /// 结束时间戳（单位为秒）
        /// </summary>
        public int end_timestamp { get; set; }
    }

    /// <summary>
    /// 卡券高级信息
    /// </summary>
    public class CardAdvancedInfo
    {
        public CardIcon Abstract { get; set; }
        public object use_condition { get; set; }
        public object text_image_list { get; set; }
        public List<object> time_limit { get; set; }
    }
    /// <summary>
    /// 卡券封面
    /// </summary>
    public class CardIcon
    {
        /// <summary>
        /// 封面说明
        /// </summary>
        public string Abstract { get; set; }
        /// <summary>
        /// 图片列表
        /// </summary>
        public List<string> icon_url_list { get; set; }
    }

    /// <summary>
    /// 卡券code状态
    /// </summary>
    public class CardCode: BaseResult
    {
        /// <summary>
        /// 用户openid
        /// </summary>
        public string openid { get; set; }
        /// <summary>
        /// 是否可以核销，true为可以核销，false为不可核销
        /// </summary>
        public bool can_consume { get; set; }
        /// <summary>
        /// 卡券领取时商户传入的渠道值
        /// </summary>
        public string outer_str { get; set; }
        /// <summary>
        /// 当前code对应卡券的状态 NORMAL 正常 CONSUMED 已核销 EXPIRE 已过期 GIFTING 转赠中 GIFT_TIMEOUT 转赠超时 DELETE 已删除 UNAVAILABLE 已失效 code未被添加或被转赠领取的情况则统一报错：invalid serial code
        /// </summary>
        public string user_card_status { get; set; }
    }

    /// <summary>
    /// 卡券code解密
    /// </summary>
    public class DecodeCardCode : BaseResult
    {
        public string code { get; set; }
    }

    /// <summary>
    /// 添加卡券
    /// </summary>
    public class AddCardInfo : BaseResult
    {
        public string card_id { get; set; }
    }
}